The latter half of the twentieth century has been witness to a phenomenon known as the information revolution. While the information revolution is a historical development broader in scope than any one event or machine, one of its hallmarks has been the decreasing cost and increasing functionality of information technology (“IT”). This trend, in turn, has driven tremendous increases in productivity as product designs, manufacturing processes, resource scheduling, administrative chores, and many other tasks, are made more efficient. Today, as a result of this trend, virtually every organization relies heavily on information technology.
Many organizations have discovered that the total cost of information technology is not limited to the cost of the hardware and software used to perform its operations; it also includes the cost of human resources devoted to maintain and configure the IT systems. One particular problem faced by many of the administrators of these systems (“IT administrators”) is that many of today's IT applications, such as web server programs, eCommerce application programs, virtual desktop programs, and server-based application programs, are designed to create multiple copies (“instances”) of themselves, with each copy handling a specific task. These instances can all run on the same computer, or may be spread across multiple computers. Although this technique has many advantages, one problem is that each instance of the program must be maintained and properly configured.
One common method of managing of multiple instances of an application program is to create a file containing a global set of configuration choices (“settings”). New instances of an application can then copy (“inherit”) their configuration settings from the so-called global configuration file. As a result of this technique, when an IT administrator changes a global setting, all new instances will automatically use the new value. One problem with this technique, however, is that IT administrators frequently need to override the global settings for a particular instance because that particular instance is used in a slightly different way. Another problem is that IT administrators may need to manage the settings of existing instances, rather than just the new instances. Those skilled in the art will appreciate that manually changing settings on a field-by-field basis across many instances of an application is a time consuming task even under the best circumstances.
One partial solution to this problem is to create multiple configuration files containing settings for the most common situations and uses. This technique, however, creates its own set of problems. For example, the IT administrator now needs to track what each configuration file does and which configuration file each instance uses. To further complicate matters, when an instance of an application is started, certain values can and should be overridden at run-time. When this occurs, the ‘override’ settings do not show up in any configuration file. As a result, IT administrators frequently cannot see from which configuration file a particular instance is inheriting when looking at that instance, or even see that a particular setting is inherited at all without performing a detailed and time-consuming investigation. These complications frequently force IT administrators to waste hours trying to determine where a configuration problem originates. As the Linux™ operating system and policy-based applications, such as eXtensible Markup Language (“XML”) driven applications, become more popular, these problems will only increase in frequency.
Without a way to help IT administrators manage multiple instances of applications, the promise of the information revolution may never be fully achieved.